Implement consistent handling of TransactionCanceled errors. #171
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously, the code handling errors would raise the cause of the
cancellation, for example ConditionalCheckFailed or ThrottlingError, if
it was caused by the first item in the list of items in the transaction.
If the failure was caused by any other item in the list, the caller
would see the TransactionCanceled.
This makes is awkward for calling code to handle errors when interested
in the exact item which caused the failure - it needs two
except
blocks for handling essentially the same thing. One for when it is the
first item and another for any other item.
This change removes any special handling and bubbles the
TransactionCanceled
error up to the caller. I've added a typedvalue for the cancellation reasons. These are documented here:
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactWriteItems.html#API_TransactWriteItems_Errors
This should allow clients to introspect the errors, if needed, with a
typed object.
Closes #170